UFO

1. Obtención de los datos

La fuente de los datos de avistamientos está aquí. En un proyecto anterior habíamos utilizado principalmente R para obtener la información de los avistamientos. Sin embargo, en esta estrategia no es muy efectiva porque no podemos tener más de 5 ó 10 instancias pidiendo información. En esta versión optamos por usar curl y parallel para bajar los HTMLs tanto de las tablas como de las descripciones largas.

Ya con la información abajo, utilizamos el comando pup para ayudarnos a procesar el HTML y finalmente el paquete rvest de R para pasarlo todo a formato tabla. Parte de este proceso fue el pegado de las descripciones largas a las tablas como una columna más, para lo que requerimos limpiar los textos de saltos de línea, etc.

2. Limpieza

Para la limpieza optamos por utilizar PostgreSQL. Si bien la base de UFO es pequeña y puede ser manejada en R sin ningún problema, optamos por pasarla por todo el proceso como práctica para la base de GDELT. Optamos por utilizar un proceso ELT, del cuál la etapa anterior corresponde a la extracción. Después de ese proceso ya teníamos la información en valores separados por pipes. Sin embargo, la base seguía estando sumanente sucia. Entonces seguía la etapa de carga a la base de datos.

Para esta parte simplemente subimos la información a una tabla de una sola columna de formato varchar. El objetivo era procesarla y dejarla lista para el análisis arriba en el PostgreSQL. Optamos por particionar la tabla anualmente. Para que pudiéramos utilizar la tabla como si fuera una sola, añadimos triggers para controlar que las inserciones en la tabla maestra se hicieran en realidad en la del año correspondiente (o en la tabla overflow en caso de no haber una tabla apropiada).

Para la limpieza lo que hicimos fue castear las columnas de manera segura a los tipos apropiados, por un lado, y por otro extraer la información relevante y transformarla a un formato útil. Por ejemplo, la duración no venía con un formato específico, así que tuvimos que extraer la cantidad y las unidades para transformarlo a segundos. Ya con la información lista, dado que como mencionábamos no son tantos datos, la pasamos a R para el análisis. A la hora de la lectura hubo que hacer un poco más de limpieza porque había unos pocos renglones que habían llegado mal. Y entonces podemos pasar a la etapa del análisis descriptivo.

3. Análisis descriptivo

Como queríamos sacar conclusiones sobre los avistamientos en EUA, entonces filtramos la base completa únicamente tomando los registros que tuvieran un valor válido según esta lista. En adelante nos referiremos a esta base filtrada con el nombre UFO, y sobre ella haremos todos los análisis.

Dimensiones de la base:

## [1] 82557    18

Columnas y sus tipos:

##             columna      tipo
## 1            origin character
## 2                id   integer
## 3         date_time character
## 4              year   numeric
## 5             month   numeric
## 6               day   numeric
## 7           weekday   numeric
## 8              city character
## 9             state character
## 10            shape character
## 11         duration character
## 12           number   numeric
## 13            units character
## 14          seconds   numeric
## 15          summary character
## 16           posted character
## 17  description_url character
## 18 long_description character
##                                                     descripcion
## 1                                Archivo de origen del registro
## 2                                         ID único del registro
## 3                                 Fecha y hora del avistamiento
## 4                                                           Año
## 5                                                           Mes
## 6                                                           Día
## 7                        Día de la semana (0=domingo, 6=sábado)
## 8                          Ciudad en la que fue avistado el UFO
## 9                          Estado en el que fue avistado el UFO
## 10                                             Forma del objeto
## 11                                    Duración del avistamiento
## 12                           Número leído del campo de duración
## 13                        Unidades leídas del campo de duración
## 14 Segundos que duró el avistamiento (número*segundos/unidades)
## 15                                    Resumen de la descripción
## 16                             Fecha y hora de subida a la base
## 17                                  URL de la descripción larga
## 18                                            Descripción larga

Primeras y últimas observaciones (sin las descripciones ni la URL). Tal parece que las observaciones modernas tienen un mejor formato de duración:

##       origin id           date_time year month day weekday
## 1 ndxe187106  1 1871-06-30 14:00:00 1871     6  30       5
## 2 ndxe188012  2 1880-12-12 20:40:00 1880    12  12       0
## 3 ndxe189704  3 1897-04-17 06:00:00 1897     4  17       6
## 4 ndxe189704  4 1897-04-15 00:00:00 1897     4  15       4
## 5 ndxe189906  5 1899-06-30 07:00:00 1899     6  30       5
## 6 ndxe140006  6 1900-06-30 00:00:00 1900     6  30       6
##                        city state    shape  duration number units seconds
## 1 Yellowstone National Park    WY      egg not known     NA            NA
## 2                Bellingham    WA fireball   Unknown     NA            NA
## 3                    Aurora    TX    cigar 5 minutes      5   min     300
## 4           Howard/Artesian    SD                        NA            NA
## 5                Carrollton    MO   sphere  one hour     NA  hour      NA
## 6       Myers Spring Canyon    TX   circle       N/A     NA            NA
##                posted
## 1 2009-12-12 00:00:00
## 2 2006-12-07 00:00:00
## 3 2012-05-13 00:00:00
## 4 2005-05-11 00:00:00
## 5 2006-02-14 00:00:00
## 6 2007-02-01 00:00:00
##           origin    id           date_time year month day weekday
## 82552       ndxe 82552                       NA    NA  NA      NA
## 82553       ndxe 82553                       NA    NA  NA      NA
## 82554       ndxe 82554                       NA    NA  NA      NA
## 82555       ndxe 82555                       NA    NA  NA      NA
## 82556 ndxe171502 82556 1915-02-01 03:00:00 1915     2   1       1
## 82557 ndxe179006 82557 1890-06-30 21:00:00 1890     6  30       1
##                      city state    shape           duration number units
## 82552                none    UT triangle             15 min     15   min
## 82553            San Jose    CA changing          5 minutes      5   min
## 82554            Richland    WA   sphere             10 min     10   min
## 82555     South Milwaukee    WI  unknown     1 to 2 minutes     12   min
## 82556 Truckee/Cisco Grove    CA cylinder         45 seconds     45   sec
## 82557            Carlisle    NY fireball less than 1 minute      1   min
##       seconds              posted
## 82552     900 2001-08-05 00:00:00
## 82553     300 2001-04-28 00:00:00
## 82554     600 2012-12-20 00:00:00
## 82555     720 2005-09-02 00:00:00
## 82556      45 2015-02-20 00:00:00
## 82557      60 2007-08-07 00:00:00

Ejemplos de descripción corta (summary) y descripción larga (long_description). Los <n> son saltos de línea.

## [1] "Old photos from 1871 show what appears to be objects in the air."
## [1] " Old photos from 1871 show what appears to be objects in the air.<n> <n><n> <n><n> This is NOT a personal UFO sitting,but rather a situation where, while viewing old photographs from 1871, I came accross two pictures that had what, appeared to me, flying objects in the air.<n> <n><n> <n><n> The pic&"

Resumen estadístico (primero variables numéricas y luego variables de texto):

##        id             year          month             day       
##  Min.   :    1   Min.   :1871   Min.   : 1.000   Min.   : 1.00  
##  1st Qu.:20640   1st Qu.:2001   1st Qu.: 4.000   1st Qu.: 7.00  
##  Median :41279   Median :2007   Median : 7.000   Median :15.00  
##  Mean   :41279   Mean   :2004   Mean   : 6.857   Mean   :15.01  
##  3rd Qu.:61918   3rd Qu.:2012   3rd Qu.:10.000   3rd Qu.:22.00  
##  Max.   :82557   Max.   :2015   Max.   :12.000   Max.   :31.00  
##                  NA's   :191    NA's   :191      NA's   :191    
##     weekday          number             seconds         
##  Min.   :0.000   Min.   :        0   Min.   :0.000e+00  
##  1st Qu.:1.000   1st Qu.:        3   1st Qu.:3.000e+01  
##  Median :3.000   Median :        6   Median :1.800e+02  
##  Mean   :3.142   Mean   :    10173   Mean   :7.495e+05  
##  3rd Qu.:5.000   3rd Qu.:       18   3rd Qu.:6.000e+02  
##  Max.   :6.000   Max.   :510872330   Max.   :2.602e+10  
##  NA's   :191     NA's   :9358        NA's   :16159
##         origin     date_time  city       state      shape      duration  
## length  "82557.00" "82557.00" "82557.00" "82557.00" "82557.00" "82557.00"
## # empty "    0.00" "  191.00" "   85.00" "    1.00" " 2683.00" " 3002.00"
## % empty "    0.00" "    0.00" "    0.00" "    0.00" "    0.03" "    0.04"
##         units      summary    posted     description_url long_description
## length  "82557.00" "82557.00" "82557.00" "82557.00"      "82557.00"      
## # empty "13057.00" "   38.00" "   55.00" "   52.00"      "  177.00"      
## % empty "    0.16" "    0.00" "    0.00" "    0.00"      "    0.00"

4. Análisis

En esta sección responderemos varias preguntas simples y haremos análisis estadísticos de la base.

4.1 Preguntas cerradas

Primer avistamiento por estado

## Source: local data frame [54 x 7]
## Groups: state
## 
##    state           date_time
## 1        1998-10-06 02:00:00
## 2     AK 1936-10-15 17:00:00
## 3     AL 1939-06-01 20:00:00
## 4     AR 1950-04-15 08:00:00
## 5     AZ 1946-09-30 20:30:00
## 6     CA 1905-06-30 03:15:00
## 7     CO 1931-02-15 14:00:00
## 8     CT 1949-06-04 10:00:00
## 9     DC 1952-07-17 00:00:00
## 10    DE 1954-06-15 11:45:00
## ..   ...                 ...
## Variables not shown: city (chr), shape (chr), duration (chr), seconds
##   (dbl), posted (chr)

Primer avistamiento por forma

## Source: local data frame [30 x 7]
## Groups: shape
## 
##    state           date_time                       city    shape
## 1     CO 1996-06-24 00:30:00                     Aurora  changed
## 2     IN 1954-07-12 17:30:00 Morroco (4 miles south of) changing
## 3     CA 1947-07-15 21:00:00                   San Jose  chevron
## 4     TX 1897-04-17 06:00:00                     Aurora    cigar
## 5     TX 1900-06-30 00:00:00        Myers Spring Canyon   circle
## 6     IN 1953-07-17 22:00:00                     Dublin     cone
## 7     WI 1997-03-22 22:30:00              Stevens Point crescent
## 8     NY 1961-03-29 00:00:00  New York City (Manhattan)    cross
## 9     CA 1915-02-01 03:00:00        Truckee/Cisco Grove cylinder
## 10    WA 1974-07-18 20:00:00                  Bremerton    delta
## ..   ...                 ...                        ...      ...
## Variables not shown: duration (chr), seconds (dbl), posted (chr)

Número de avistamientos por año

Promedio mensual de avistamientos

## Source: local data frame [1 x 1]
## 
##   monthly_mean
## 1     99.59613

Promedio anual de avistamientos

## Source: local data frame [1 x 1]
## 
##   yearly_mean
## 1    857.9792

Promedio de avistamientos por mes

Promedio de avistamientos mensuales por estado

Como vemos en los mapas, hay una gran diferencia entre el número de avistamientos totales y el per cápita. Al parecer la población afecta mucho los avistamientos. Es de esperarse que Nevada saliera con muchos avistamientos por persona, puesto que el desierto ahí es famoso por los UFOS.

Varianza de avistamientos mensuales por estado

Hay que notar que en este caso los estados con mayor cantidad de avistamientos (debido a mayor población por ejemplo) tenderán a tener una mayor varianza. La segunda gráfica muestra los estados en el mismo orden, pero ahora la estadística es \(\sigma/\mu\), la desviación normalizada con la media, en lugar de \(\sigma\):

Olas temporales

En la escala logarítmica podemos ver con claridad que antes de 1940 casi no había avistamientos. En esa década los avistamientos empezaron a tener un crecimiento exponencial, con un bache en los 80s. El crecimiento fue retomado después y sigue la misma tendencia exponencial que antes.

Olas espaciales

Para las olas espacio-temporales veremos la información agregada por década. Hasta 1950 juntamos la información por ser muy poca. Como vemos, aunque el lugar con más avistamientos cambia si hacemos el análisis per cápita o no, lo que es consistente es que hubo muchos avistamientos en la década del 2000. Habría que conseguir información poblacional más precisa para hacer este análisis más finamente.

Narrativas parecidas

Para las narrativas parecidas consideraremos la longitud promedio de las descripciones largas. Queremos ver si hay alguna diferencia entre los diferentes estados en este sentido. Y de hecho vemos algunos datos interesantes. Por ejemplo, parece ser que en Dakota del Norte las descripciones son las más largas, mientras que las de Dakota del Sur se encuentran entre las más cortas. Al parecer en Kansas e Idaho tampoco describen mucho lo que ven. En el bloque sureste también hay descripciones más cortas. Esto podría deberse por ejemplo a temas religiosos.

##        long      lat group order  region subregion state avg_sightings
## 1 -87.46201 30.38968     1     1 alabama      <NA>    AL             3
## 2 -87.48493 30.37249     1     2 alabama      <NA>    AL             3
## 3 -87.52503 30.37249     1     3 alabama      <NA>    AL             3
## 4 -87.53076 30.33239     1     4 alabama      <NA>    AL             3
## 5 -87.57087 30.32665     1     5 alabama      <NA>    AL             3
## 6 -87.58806 30.32665     1     6 alabama      <NA>    AL             3
##   state_ordered population income illiteracy life_exp murder hs_grad frost
## 1            AL       3615   3624        2.1    69.05   15.1    41.3    20
## 2            AL       3615   3624        2.1    69.05   15.1    41.3    20
## 3            AL       3615   3624        2.1    69.05   15.1    41.3    20
## 4            AL       3615   3624        2.1    69.05   15.1    41.3    20
## 5            AL       3615   3624        2.1    69.05   15.1    41.3    20
## 6            AL       3615   3624        2.1    69.05   15.1    41.3    20
##    area avg_sightings_per_capita mean_long_desc_len
## 1 50708             0.0008298755           649.3301
## 2 50708             0.0008298755           649.3301
## 3 50708             0.0008298755           649.3301
## 4 50708             0.0008298755           649.3301
## 5 50708             0.0008298755           649.3301
## 6 50708             0.0008298755           649.3301

Características sociales

Para ver si las características sociales tienen algún efecto sobre la cantidad de avistamientos, graficaremos algunas de ellas contra el promedio mensual de avistamientos. En particular graficaremos la tasa de analfabetismo, la de asesinatos, la esperanza de vida y la tasa de graduación de la univarsidad. Para graficarlas juntas más fácilmente normalizamos cada una a su máximo. Interesantemente, no parece haber mucha relación entre estas variables sociales y los avistamientos.

4.2 Modelo predictivo: Kriging sobre la cantidad de avistamientos

Con el siguiente modelo intentaremos predecir espacialmente la cantidad de avistamientos que esperamos ver. Utilizaremos la información de 2014 con el fin de predecir en 2015. Sumaremos los avistamientos de un estado y supondremos que fueron vistos desde el punto medio del estado. Entonces los centros de los estados son puntos fijos en los que observamos una cantidad aleatoria de avistamientos. Haremos Krigging ordinario para tener una predicción continua de los avistamientos para 2015. Primero veamos un mapa con los avistamientos en el centro, denotados por el tamaño de los puntos:

Ahora graficamos el variograma empírico:

## variog: computing omnidirectional variogram

## variofit: covariance model used is exponential 
## variofit: weights used: npairs 
## variofit: minimisation function used: optim

Y finalmente mostramos nuestras predicciones continuas para 2015 en la escala de color. Los puntos nuevamente representan

## krige.conv: model with constant mean
## krige.conv: Kriging performed using global neighbourhood

GDELT

1. Obtención de los datos

Obtuvimos los datos de GDELT en un proyecto anterior, utilizando bash y R para scrappear la página.

2. Limpieza

Para esta base también decidimos utilizar una estrategia ELT. Dado que la extracción ya había sido llevada a cabo, pasamos directamente a la carga. La base de eventos de GDELT pesa alrededor de 12GB cuando está comprimida. Cuando se descomprime pesa cerca de 100GB. Debido a eso, nos fue imposible descomprimirla antes de subirla. Lo que hicimos fue descomprimirla directamente al stdout y subirla directamente con \COPY a PostgreSQL. En esta ocasión la información era de mucho mejor calidad que en la base de UFO, así que la base sucia de subida sí tenía ya las columnas definitivas, pero en formato de texto. Dado que la base es enorme, tardó varias horas en descomprimirse y subirse, pero quedó en menos de una noche. Una forma de haber acelerado el proceso a costa de menor seguridad de los datos habría sido crear esta tabla como unlogged, aunque el comando \COPY no sufre tanto como INSERT.

Para crear la base limpia, creamos la tabla maestra y luego creamos la partición de acuerdo a los archivos originales. Lo que esto implica es que hay algunas tablas que están por año, otras por mes y otras por día, pero como las que corresponden a intervalos de tiempo más cortos son más nuevas, también tienen más información. Optamos por este esquema porque si no la partición consistiría de pocas tablas muy grandes, en especial las recientes. En este caso también generamos los triggers apropiados para que la tabla se comportara como una sola. Y ya con la estructura construida, insertamos desde la tabla sucia pero poniendo los tipos, formatos y nulos apropiados. También hicimos un índice por algunas columnas relevantes, aunque debido a que hicimos pocos queries de diversos tipos, no los utilizamos mucho. El proceso tardó alrededor de dos días con pausas, trabajando toda la noche y buena parte del día. Creemos que una buena parte se debe a que al momento de hacer este paso no habíamos optimizado la configuración del PostgreSQL.

3. Optimización del PostgreSQL

Para que los queries terminaran en tiempo finito, tuvimos que configurar correctamente el PostgreSQL. A continuación enlistamos lo que cambiamos:

Después de hacer estos cambios, los queries simples como sumarizaciones tomaban alrededor de 40 ó 50 minutos.

4. Análisis descriptivo

Dado que la tabla de GDELT tiene aproximadamente 300,000,000 de renglones y 58 columnas, resulta imposible analizarla directamente en R. A continuación presentamos estadísticas descriptivas de las columnas más relevantes a los análisis que haremos:

gdelt_conteos <- read.csv('../output/conteos_gdelt_full.psv', header = T, sep = '|')
x <- data.frame(t(gdelt_conteos)) %>%
  format(scientific = F)
names(x) <- 'valor'
x$valor <- ifelse(x$valor == as.integer(x$valor), as.integer(x$valor), round(as.numeric(x$valor), 2))
kable(x)
valor
numrow 295243631.00
mindate 19790101.00
maxdate 20150218.00
nulldate 0.00
numrootevents 190841002.00
numnonrootevents 104402629.00
numnullactor1 27776950.00
numnullactor1geo_countrycode 33654997.00
numnullactor1geo_fullname 34096538.00
meangoldsteinscale 0.52
sdgoldsteinscale 4.74
minnummentions 0.00
maxnummentions 72158.00
meannummentions 8.31
minnumsources 0.00
maxnumsources 599.00
meannumsources 1.62
avgtone 4.44
numnullactor2 74651308.00
numnullactor2geo_countrycode 79164564.00
numnullactor2geo_fullname 79515345.00

Estos datos confirman nuestra afirmación anterior de que la base de GDELT está en mucho mejor estado que la de UFO: hay mucho menos nulos en los campos relevantes.

5. Análisis

5.1 Preguntas cerradas

Para el análisis responderemos algunas preguntas similares a las que respondimos para UFO. Antes que nada, hicimos una tabla agregada por mes de de la base completa. El objetivo de hacerlo es que muchos de los queries sólo requieren información mensual, por lo que

Primer evento de cada país

Dado que la base original venía ordenada por fecha de los eventos y no por país, tuvimos que hacer el query de manera inteligente. La forma naive habría sido ordenar por país y luego por fecha y tomar la primera observación de cada grupo. Sin embargo, ordenar la base completa de 300M de renglones es impráctico en una computadora pequeña (según nuestros cálculos se requerirían al menos unos 30GB de RAM para que el ordenamiento fuera razonablemente rápido). Por lo tanto, tuvimos que usar otro enfoque:

  1. De la base sumarizada por mes, ordenar por país (actor1countrycode) y por fecha (no incluye el día) y tomar la primera observación de cada grupo. Luego, tomar las combinaciones distintas de mes y año (monthyear).
  2. Dado que la tabla de GDELT está ordenada por fecha, hacer un inner join con el resultado del paso (1) con la variable monthyear es relativamente barato. El resultado de ese join es igual la tabla original pero sólo incluye los meses en los que algún país apareció por primera vez. Dado que muchos países comparten primer mes de aparición, esta tabla es mucho más pequeña que la completa.
  3. Aplicar el procedimiento naive a la tabla resultante del paso (2).

A continuación mostramos los resultados del query anterior:

sqldate country
19790101 Africa, Argentina, Cambodia, Canada, Central African Republic, Chad, Chile, China, Cuba, Democratic Republic of the Congo, East Timor, Egypt, Eritrea, Ethiopia, Europe, France, Gabon, Greece, Hungary, Indonesia, Iran, Israel, Italy, Laos, Mexico, Monaco, Namibia, Nepal, Nicaragua, Occupied Palestinian Territory, Pakistan, Peru, Poland, Russia, Saudi Arabia, Somalia, Southeast Asia, Sri Lanka, Syria, Turkey, United Kingdom, United States, Uzbekistan, Vatican City, Vietnam, Zambia, Zimbabwe
19790102 Algeria, Antigua and Barbuda, Australia, Austria, Bahrain, Bolivia, Bulgaria, Cameroon, Columbia, Costa Rica, Czech Republic, Ecuador, Germany, Guyana, Iraq, Japan, Mozambique, Panama, Philippines, South Africa, Spain, Sudan, Swaziland, Sweden, Switzerland, Tanzania, Thailand, The West, Tunisia, Uganda, Ukraine, United Arab Emirates, Venezuela
19790103 Afghanistan, Albania, Armenia, Asia, Belgium, Belize, Benin, Cape Verde, El Salvador, Finland, Guatemala, Guinea, Haiti, Honduras, India, Ireland, Kuwait, Lebanon, Libya, Mauritania, Netherlands, Nigeria, North Korea, Portugal, Senegal, South Asia, South Korea
19790104 Bangladesh, Botswana, Caribbean, Croatia, Cyprus, Jamaica, Kenya, Mauritius, New Zealand
19790105 Anguilla, Fiji, Grenada, Malawi, Mongolia, Norway, Persian Gulf, Saint Kitts-Nevis, Slovakia
19790106 Angola, Malaysia
19790107 Ghana, Sierra Leone
19790108 Bahamas, Brunei Darussalam, Estonia, Latvia, Madagascar, Malta, Uruguay, Yemen
19790109 Azerbaijan, Djibouti, Ivory Coast, Jordan, Lesotho, Macao, Maldives, Serbia, Togo
19790110 Belarus, Bhutan, Brazil, Iceland
19790111 Dominican Republic, Kazakhstan, Lithuania, Myanmar, North America
19790112 Bermuda, Denmark, Moldova, Oman, Suriname
19790113 Singapore
19790114 Morocco
19790115 Luxembourg, Middle East, Niger, Seychelles
19790116 Macedonia
19790117 People’s Republic of the Congo
19790118 Trinidad and Tobago
19790119 Liberia, Mali
19790120 Dominica
19790122 Turkmenistan
19790123 Micronesia
19790124 San Marino
19790125 Samoa
19790128 Qatar
19790131 Burkina Faso, Equatorial Guinea
19790201 Comoros
19790202 Barbados, Palau
19790203 Rwanda, Sao Tome and Principe
19790205 Burundi
19790208 Paraguay
19790210 Kyrgyzstan
19790221 Guinea-Bissau, Saint Lucia
19790222 Gambia
19790223 Cayman Islands
19790302 Papua New Guinea
19790305 Nauru
19790316 Saint Vincent and the Grenadines
19790321 Tajikistan
19790405 Liechtenstein
19790414 Georgia
19790419 Saint Helena
19790506 West Africa
19790509 Tuvalu
19790518 Tonga
19790524 Eastern Europe
19790626 Central Asia
19790707 Kiribati
19790814 Cook Islands
19791030 Southern Africa
19791123 Aruba
19791210 Scandinavia
19800102 Eastern Africa
19800320 Solomon Islands
19800524 Marshall Islands
19800531 Vanuatu
19830510 Latin America
19830920 South America
19840501 Andorra
19860828 Wallis and Futuna Islands
19891228 Romania
19961004 Hong Kong
19970123 Caucasus
19980503 North Africa
20030718 Balkans
20031101 Taiwan
20060920 Puerto Rico

Estadísticas mensuales simples por país

A continuación mostramos estadísticas simples por país. Fueron sacadas resumiendo la base mensual en R.

country tot_numevents avg_numevents avg_goldsteinscale tot_nummentions avg_nummentions tot_numsources avg_numsources avg_avgtone
97401 3142.0 -0.309 889239 28685.1 165406 5335.7 2.5
Afghanistan 2856554 6581.9 -0.618 24403163 56228.5 5289172 12187.0 4.4
Africa 2201215 5071.9 0.766 14107816 32506.5 3068153 7069.5 5.1
Albania 382047 880.3 0.847 1837385 4233.6 451440 1040.2 5.3
Algeria 332057 765.1 0.966 2148324 4950.1 491065 1131.5 4.6
Andorra 2262 12.5 2.071 10994 60.7 2582 14.3 5.0
Angola 336400 775.1 1.284 1591686 3667.5 378812 872.8 5.0
Anguilla 3627 18.2 1.162 22581 113.5 5340 26.8 5.2
Antigua and Barbuda 19245 52.3 1.309 112700 306.2 25360 68.9 4.9
Argentina 447068 1030.1 1.179 2698436 6217.6 647232 1491.3 4.7
Armenia 615293 1421.0 0.351 3103722 7167.9 708826 1637.0 4.8
Aruba 12053 48.4 1.021 118264 475.0 30386 122.0 4.6
Asia 18460 50.3 3.932 138305 376.9 21914 59.7 5.5
Australia 3159885 7280.8 1.182 24673118 56850.5 5207279 11998.3 4.9
Austria 414049 954.0 1.550 2639985 6082.9 584725 1347.3 5.0
Azerbaijan 653843 1538.5 0.994 3415703 8036.9 750989 1767.0 5.0
Bahamas 138729 333.5 0.826 757448 1820.8 178279 428.6 4.9
Bahrain 307358 709.8 1.674 2293778 5297.4 460045 1062.5 5.0
Balkans 3 1.5 -2.000 12 6.0 3 1.5 4.9
Bangladesh 569274 1311.7 0.869 3624966 8352.5 750432 1729.1 4.6
Barbados 37450 94.3 1.745 231609 583.4 42341 106.7 5.0
Belarus 368742 855.5 1.597 1986246 4608.5 451549 1047.7 5.0
Belgium 652316 1503.0 1.510 4411469 10164.7 967413 2229.1 4.9
Belize 61257 153.1 1.594 358622 896.6 77756 194.4 5.4
Benin 49329 116.1 1.907 285809 672.5 65307 153.7 5.2
Bermuda 77511 186.8 0.357 469510 1131.3 110338 265.9 5.1
Bhutan 52593 137.3 2.240 344266 898.9 68928 180.0 5.0
Bolivia 172416 397.3 0.921 1075640 2478.4 254965 587.5 4.8
Botswana 125082 288.9 1.533 649937 1501.0 143717 331.9 4.8
Brazil 661409 1524.0 1.622 4373409 10077.0 976607 2250.2 4.7
Brunei Darussalam 85164 205.2 2.296 511741 1233.1 120601 290.6 5.2
Bulgaria 507950 1170.4 1.906 2991776 6893.5 587818 1354.4 5.1
Burkina Faso 57231 136.9 2.012 438057 1048.0 93650 224.0 5.3
Burundi 108781 257.8 1.423 575475 1363.7 131196 310.9 4.9
Cambodia 452109 1041.7 0.488 2895194 6671.0 602619 1388.5 5.2
Cameroon 104419 241.7 1.289 712040 1648.2 156754 362.9 4.8
Canada 3240337 7466.2 1.270 26387753 60801.3 4821752 11110.0 5.2
Cape Verde 16108 41.0 2.220 91065 231.7 21180 53.9 5.3
Caribbean 7397 22.0 2.214 49426 147.1 9113 27.1 5.6
Caucasus 135 3.0 2.502 684 15.2 150 3.3 5.7
Cayman Islands 30319 106.8 0.959 183652 646.7 35735 125.8 4.9
Central African Republic 75315 178.0 0.739 552803 1306.9 124054 293.3 4.6
Central Asia 8747 29.9 2.629 40748 139.1 10785 36.8 5.1
Chad 167412 386.6 0.918 1052334 2430.3 247678 572.0 4.8
Chile 313348 722.0 1.042 2038983 4698.1 462952 1066.7 4.9
China 5466863 12596.5 1.542 41991303 96754.2 8790773 20255.2 5.9
Columbia 575029 1325.0 0.361 3417337 7874.0 811833 1870.6 4.8
Comoros 18324 51.8 1.361 97610 275.7 22342 63.1 4.5
Cook Islands 8238 28.5 1.976 50296 174.0 10483 36.3 5.4
Costa Rica 109154 251.5 1.633 563118 1297.5 139380 321.2 5.0
Croatia 466980 1076.0 0.826 2161135 4979.6 538875 1241.6 4.7
Cuba 750422 1729.1 1.597 5382714 12402.6 1232774 2840.5 5.4
Cyprus 333038 767.4 1.538 1868714 4305.8 421529 971.3 4.8
Czech Republic 470960 1085.2 1.707 2626885 6052.7 589736 1358.8 5.0
Democratic Republic of the Congo 260117 599.3 1.079 1656393 3816.6 339416 782.1 4.7
Denmark 360630 830.9 1.543 2429587 5598.1 553504 1275.4 5.1
Djibouti 60217 139.7 1.888 326724 758.1 82725 191.9 4.7
Dominica 10539 29.0 1.655 70624 194.0 15180 41.7 5.3
Dominican Republic 97608 224.9 0.978 633852 1460.5 141693 326.5 4.9
East Timor 97268 260.1 0.687 521958 1395.6 121484 324.8 5.0
Eastern Africa 5902 24.0 2.532 39862 162.0 6981 28.4 5.9
Eastern Europe 98 2.2 0.296 323 7.3 99 2.2 5.9
Ecuador 186296 431.2 1.402 1421932 3291.5 324727 751.7 4.7
Egypt 2328369 5364.9 1.445 18101913 41709.5 4092655 9430.1 4.9
El Salvador 145389 335.0 0.407 776638 1789.5 199092 458.7 5.0
Equatorial Guinea 24674 64.9 1.526 129358 340.4 31039 81.7 5.2
Eritrea 117089 269.8 0.399 596045 1373.4 144045 331.9 5.2
Estonia 138757 323.4 1.581 756496 1763.4 173597 404.7 5.0
Ethiopia 423768 976.4 1.223 2484980 5725.8 558221 1286.2 5.1
Europe 2301957 5304.0 1.841 19788327 45595.2 3289283 7579.0 5.4
Fiji 211201 505.3 1.359 1320209 3158.4 253029 605.3 4.9
Finland 283767 653.8 2.089 1742617 4015.2 364145 839.0 5.0
France 3505125 8076.3 1.185 24922595 57425.3 5801044 13366.5 4.9
Gabon 40878 96.0 2.045 245752 576.9 51545 121.0 4.9
Gambia 97887 242.9 1.577 501613 1244.7 116463 289.0 5.2
Georgia 43164 117.0 1.688 239827 649.9 49322 133.7 5.0
Germany 2607856 6008.9 1.159 17811715 41040.8 4007663 9234.2 5.0
Ghana 541358 1247.4 1.572 3290155 7581.0 718245 1654.9 5.5
Greece 865900 1995.2 1.174 6492954 14960.7 1358540 3130.3 4.8
Grenada 89039 206.6 0.927 524024 1215.8 132530 307.5 5.5
Guatemala 138930 320.1 0.628 869564 2003.6 213803 492.6 4.9
Guinea 105461 243.6 1.437 773158 1785.6 168559 389.3 5.0
Guinea-Bissau 34615 84.6 1.748 177574 434.2 45639 111.6 5.0
Guyana 79620 183.9 1.244 453891 1048.2 102161 235.9 5.0
Haiti 303746 708.0 0.606 2179913 5081.4 484849 1130.2 5.3
Honduras 154528 356.1 0.916 988757 2278.2 235255 542.1 4.7
Hong Kong 9372 60.9 1.449 95544 620.4 12781 83.0 5.2
Hungary 387771 893.5 1.947 2106926 4854.7 489893 1128.8 5.2
Iceland 60854 147.3 2.081 467711 1132.5 86610 209.7 5.3
India 2018068 4649.9 0.168 12861351 29634.4 2714143 6253.8 4.8
Indonesia 1230393 2835.0 1.103 7891086 18182.2 1735930 3999.8 4.6
Iran 3683900 8488.2 0.314 28739245 66219.5 5935963 13677.3 4.7
Iraq 3040386 7005.5 -0.526 21548305 49650.5 4849349 11173.6 4.4
Ireland 1121623 2584.4 0.163 7276536 16766.2 1582189 3645.6 5.0
Israel 5031434 11593.2 -0.135 36763942 84709.5 8247645 19003.8 4.7
Italy 1582815 3647.0 1.088 11033836 25423.6 2505530 5773.1 4.9
Ivory Coast 167659 389.9 1.318 1180445 2745.2 262605 610.7 4.8
Jamaica 252026 583.4 0.930 1459794 3379.2 312666 723.8 4.9
Japan 2642120 6087.8 1.744 19323617 44524.5 3986586 9185.7 5.1
Jordan 1111050 2560.0 1.513 7084436 16323.6 1658007 3820.3 5.1
Kazakhstan 299581 696.7 2.242 1674947 3895.2 363270 844.8 5.0
Kenya 1076030 2479.3 0.856 6796308 15659.7 1433813 3303.7 4.6
Kiribati 9494 32.3 2.004 76573 260.5 15651 53.2 5.2
Kuwait 435061 1002.4 1.466 2639459 6081.7 548008 1262.7 4.8
Kyrgyzstan 242968 615.1 1.773 1287816 3260.3 295047 747.0 5.0
Laos 104878 241.7 2.030 560422 1291.3 134520 310.0 5.5
Latin America 1074 5.6 1.025 5392 28.2 1332 7.0 4.8
Latvia 154743 358.2 1.552 816749 1890.6 187053 433.0 5.0
Lebanon 1355551 3123.4 -0.273 7800894 17974.4 1888303 4350.9 4.5
Lesotho 33295 77.4 1.350 194038 451.3 40693 94.6 5.0
Liberia 271198 624.9 0.789 1732934 3992.9 394048 907.9 5.4
Libya 982065 2262.8 0.960 9251197 21316.1 2056172 4737.7 4.9
Liechtenstein 9257 29.9 1.785 59165 190.9 12750 41.1 5.8
Lithuania 190065 440.0 1.565 1040279 2408.1 236048 546.4 5.2
Luxembourg 83323 194.7 2.238 582987 1362.1 123365 288.2 5.1
Macao 15034 36.4 1.990 57003 138.0 17529 42.4 5.6
Macedonia 228351 526.2 1.334 1083733 2497.1 255186 588.0 5.2
Madagascar 48920 114.6 1.587 341005 798.6 68535 160.5 5.1
Malawi 114831 268.9 1.494 692886 1622.7 141821 332.1 5.0
Malaysia 1147824 2644.8 1.609 8348285 19235.7 1625707 3745.9 4.8
Maldives 191046 440.2 0.308 1648216 3797.7 269949 622.0 4.7
Mali 156106 359.7 1.785 1445662 3331.0 299563 690.2 5.2
Malta 164275 388.4 1.939 963055 2276.7 199209 470.9 5.0
Marshall Islands 15061 45.2 1.917 90616 272.1 20681 62.1 5.4
Mauritania 66199 153.2 1.609 427792 990.3 98868 228.9 4.8
Mauritius 38504 94.1 2.271 226652 554.2 48104 117.6 5.0
Mexico 1080979 2490.7 0.662 8338570 19213.3 1944373 4480.1 4.9
Micronesia 102167 246.2 1.853 522344 1258.7 118449 285.4 5.1
Middle East 146519 337.6 1.796 1137895 2621.9 254094 585.5 4.8
Moldova 136017 350.6 1.649 686160 1768.5 161581 416.4 5.3
Monaco 101050 233.4 0.616 641910 1482.5 149011 344.1 5.4
Mongolia 86520 199.4 2.572 498833 1149.4 110560 254.7 5.9
Morocco 274320 632.1 1.405 1639417 3777.5 372494 858.3 4.9
Mozambique 191297 440.8 1.267 967755 2229.9 223343 514.6 4.8
Myanmar 551593 1271.0 1.055 4269670 9837.9 857106 1974.9 4.9
Namibia 230184 530.4 1.124 1082195 2493.5 262286 604.3 4.8
Nauru 13197 46.8 1.726 97049 344.1 20879 74.0 5.2
Nepal 418352 963.9 1.151 3015014 6947.0 555536 1280.0 4.9
Netherlands 700100 1613.1 1.067 4802455 11065.6 1086100 2502.5 4.7
New Zealand 782519 1803.0 1.497 5931365 13666.7 1041096 2398.8 5.8
Nicaragua 179264 413.1 1.016 878451 2024.1 222854 513.5 5.1
Niger 94138 219.9 1.427 706067 1649.7 160527 375.1 4.9
Nigeria 1987258 4578.9 0.924 11231029 25877.9 2621944 6041.3 4.9
North Africa 300 5.6 2.283 1372 25.4 321 5.9 6.0
North America 106381 248.0 1.904 555987 1296.0 146276 341.0 5.6
North Korea 990640 2282.6 1.405 8698753 20043.2 1776284 4092.8 5.3
Norway 393630 907.0 1.701 2870807 6614.8 635856 1465.1 5.2
Occupied Palestinian Territory 2451922 5649.6 -0.382 18421435 42445.7 3914590 9019.8 4.6
Oman 190128 439.1 2.466 1294093 2988.7 251891 581.7 5.2
Pakistan 3705642 8538.3 0.427 26309870 60621.8 5807975 13382.4 4.6
Palau 13650 36.7 1.557 83825 225.3 18176 48.9 5.4
Panama 150195 346.1 1.376 899598 2072.8 208566 480.6 5.0
Papua New Guinea 73314 176.2 1.260 490848 1179.9 104827 252.0 5.5
Paraguay 60482 143.7 1.102 328242 779.7 84392 200.5 4.8
People’s Republic of the Congo 105244 244.8 1.152 734310 1707.7 157736 366.8 4.7
Persian Gulf 42914 98.9 1.128 315497 727.0 60595 139.6 5.1
Peru 307293 708.0 0.754 1874616 4319.4 433913 999.8 4.8
Philippines 1749932 4032.1 0.281 9963774 22958.0 2246563 5176.4 4.7
Poland 794517 1830.7 1.515 4833654 11137.5 1075108 2477.2 5.3
Portugal 293370 676.0 1.628 1769220 4076.5 398617 918.5 5.0
Puerto Rico 108 2.6 2.055 1131 26.9 152 3.6 5.5
Qatar 483607 1114.3 2.004 3316219 7641.1 705646 1625.9 4.8
Romania 5317 19.7 2.130 29604 109.6 5850 21.7 5.8
Russia 6277836 14465.1 1.176 44530930 102605.8 9594920 22108.1 5.0
Rwanda 329604 782.9 1.210 1809446 4298.0 426140 1012.2 4.8
Saint Helena 1927 8.6 1.470 15953 71.5 2907 13.0 5.5
Saint Kitts-Nevis 24368 57.6 2.020 196687 465.0 36992 87.5 6.1
Saint Lucia 22107 64.8 1.747 145817 427.6 28867 84.7 5.5
Saint Vincent and the Grenadines 20996 63.1 1.736 130966 393.3 25729 77.3 5.2
Samoa 25071 74.0 1.538 150794 444.8 32692 96.4 5.1
San Marino 2976 14.7 2.058 14397 71.3 4032 20.0 5.3
Sao Tome and Principe 14448 38.2 2.442 65389 173.0 15709 41.6 5.0
Saudi Arabia 1373322 3164.3 1.299 8677339 19993.9 2036810 4693.1 5.0
Scandinavia 909 6.1 2.162 5436 36.7 930 6.3 5.3
Senegal 119734 275.9 1.570 794220 1830.0 171146 394.3 4.9
Serbia 307065 715.8 0.979 1567040 3652.8 389593 908.1 5.1
Seychelles 108670 253.3 1.215 582982 1358.9 162245 378.2 5.2
Sierra Leone 173954 409.3 1.183 1050818 2472.5 240835 566.7 5.1
Singapore 421246 970.6 2.009 3045534 7017.4 583633 1344.8 4.9
Slovakia 243087 560.1 1.943 1259063 2901.1 285126 657.0 5.1
Solomon Islands 37143 104.9 1.343 234506 662.4 47135 133.1 5.2
Somalia 674650 1554.5 0.166 4439251 10228.7 1049889 2419.1 4.6
South Africa 839924 1935.3 0.151 4131780 9520.2 1121280 2583.6 4.8
South America 2112 11.0 3.050 10753 56.0 2769 14.4 5.9
South Asia 84209 194.0 1.345 619557 1427.6 109635 252.6 5.0
South Korea 1371529 3160.2 1.321 10705233 24666.4 2233139 5145.5 5.1
Southeast Asia 362258 834.7 1.376 2755293 6348.6 500181 1152.5 5.1
Southern Africa 36703 138.0 2.232 266594 1002.2 44426 167.0 5.6
Spain 1130356 2604.5 1.001 7474334 17222.0 1688760 3891.2 4.8
Sri Lanka 699264 1611.2 0.049 4691002 10808.8 921495 2123.3 4.3
Sudan 907304 2090.6 1.002 5840181 13456.6 1293432 2980.3 5.1
Suriname 15828 41.2 1.577 98679 257.0 20385 53.1 4.9
Swaziland 59520 141.4 1.333 320982 762.4 69159 164.3 4.8
Sweden 452427 1042.5 1.414 3008878 6932.9 730973 1684.3 5.0
Switzerland 796454 1835.1 1.393 5752176 13253.9 1233635 2842.5 5.0
Syria 2420514 5577.2 1.156 20328438 46839.7 4810888 11085.0 4.9
Taiwan 101025 2464.0 1.447 823926 20095.8 150591 3673.0 2.6
Tajikistan 250943 616.6 1.533 1207183 2966.1 292306 718.2 5.0
Tanzania 267816 617.1 1.770 1390600 3204.1 316744 729.8 4.9
Thailand 991525 2284.6 0.763 6764281 15585.9 1404132 3235.3 4.4
The West 580311 1337.1 0.746 5660545 13042.7 1005344 2316.5 5.3
Togo 58000 134.3 1.829 327539 758.2 71848 166.3 4.9
Tonga 24552 76.7 1.576 158052 493.9 33177 103.7 5.2
Trinidad and Tobago 102598 244.9 1.312 516481 1232.7 121218 289.3 4.6
Tunisia 301696 695.2 1.606 2235557 5151.1 518927 1195.7 5.0
Turkey 2455699 5658.3 0.765 15500605 35715.7 3545573 8169.5 4.6
Turkmenistan 155263 377.8 2.496 760351 1850.0 180418 439.0 5.3
Tuvalu 5901 23.7 2.192 39201 157.4 8167 32.8 5.6
Uganda 772707 1780.4 0.964 4086796 9416.6 940357 2166.7 4.7
Ukraine 1404364 3235.9 1.468 12763091 29408.0 2345981 5405.5 5.0
United Arab Emirates 557773 1285.2 1.858 3719425 8570.1 802696 1849.5 4.9
United Kingdom 6368297 14673.5 0.790 45211599 104174.2 10075457 23215.3 5.1
United States 45112289 103945.4 0.830 415933646 958372.5 88053355 202887.9 5.5
Uruguay 80796 188.3 1.913 500710 1167.2 115915 270.2 4.9
Uzbekistan 207716 479.7 1.621 1033833 2387.6 249333 575.8 5.1
Vanuatu 16707 44.6 1.542 94405 251.7 19285 51.4 5.4
Vatican City 195701 450.9 1.462 1979227 4560.4 362162 834.5 5.4
Venezuela 477879 1101.1 1.437 3268318 7530.7 776244 1788.6 4.8
Vietnam 828427 1908.8 1.295 4548627 10480.7 1129937 2603.5 5.5
Wallis and Futuna Islands 192 3.0 1.737 1057 16.5 211 3.3 5.4
West Africa 40364 104.6 2.127 337161 873.5 57773 149.7 5.3
Yemen 582228 1341.5 0.994 5114827 11785.3 1071810 2469.6 4.7
Zambia 412560 950.6 1.268 1969655 4538.4 458178 1055.7 4.9
Zimbabwe 650872 1499.7 0.930 3844971 8859.4 803466 1851.3 4.8

5.2 Análisis de aglomerados

Ahora haremos un análisis de aglomerados para ver si descubrimos países similares a México. El enfoque que tomaremos será utilizar como observaciones a los países y como variables el número de eventos registrados en ese mes cuyo actor principal sea ese país. El criterio de distancia que utilizaremos será la correlación entre las series de tiempo. Una de las ventajas de esta medida es que es invariante a escala, de modo que no importa si un país tiene muchos más eventos que otro, si se aglomeran en los mismos momentos del tiempo, igual la correlación será alta.

Estamos interesados particularmente en analizar el caso de México. A continuación presentamos una gráfica que ilustra las correlaciones de los países con México:

Ahora graficaremos dos países muy distintos a México y uno similar:

Después de hacer el análisis de aglomerado jerárquico, concluimos que no hay un grupo muy claro al que pertenezca México. Esto se debe a que en el dendrograma, no importa si tomamos pocos o muchos grupos, de todos modos México está en uno grande:

El hecho anterior es confirmado por la primera gráfica en la que mostramos las correlaciones, porque no hay un grupo pequeño de países muy parecidos a México, sino que la correlación disminuye lentamente con el ordenamiento. También hicimos un análisis de K-Medias (aunque no está diseñado para la distancia coseno) y uno de K-Medias esférico (paquete skmeans), pero llegamos a la misma conclusión: la varianza dentro de los grupos es grande en relación a la varianza entre grupos, de modo que no vale la pena aglomerar.

6. Extensiones

Creemos que es perfectamente posible construir modelos predictivos a partir de estos datos, pero hay que hacerlo de forma inteligente. Por ejemplo, se puede analizar la serie de tiempo diaria por país o por alguna otra columna agrupadora. Si se agrega datos geolocalizados también se puede hacer algún tipo de modelo espacial, utilizando por ejemplo Krigging o modelos de procesos puntuales.

Otro tipo de información que se podría agregar sería por ejemplo datos económicos del Banco Mundial o datos sociales de la ONU. El pegado podría ser algo pesado y probablemente no sería lo mejor hacerlo en una computadora de escritorio. Además, seguramente requerirá algo de trabajo homologar las columnas apropiadas para permitir el cruce, pero seguramente algo se puede hacer.

Una última idea que se nos ocurre es explotar las ligas a internet que vienen en la última columna a partir del 1o de abril de 2013. Podríamos analizar el tipo de páginas a las que nos lleva y explotar el contenido y los metadatos para obtener más información.